{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\x02'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import struct\n",
    "struct.pack('>B', 2) # 高位字节"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\x00\\x00\\x00\\x02'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "struct.pack('>i', 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "![jupyter](./g1.png)\n",
    "![jupyter](./g2.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2051, 60000, 28, 28)\n",
      "47040000\n"
     ]
    }
   ],
   "source": [
    "import struct\n",
    "with open('./MNIST_data1/train-images-idx3-ubyte', 'rb') as f:\n",
    "    buffer = f.read(4*4)\n",
    "    head = struct.unpack('>iiii', buffer)\n",
    "    print(head)\n",
    "    length = head[1] * head[2] * head[3]\n",
    "    print(length)\n",
    "    buffer = f.read(length)\n",
    "    data = struct.unpack('>{}B'.format(length), buffer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tuple"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "imgs = np.reshape(data, (head[1], head[2], head[3]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imgs.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "for i in range(5):\n",
    "    plt.imshow(imgs[i], cmap = 'gray')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/feature_extraction/text.py:17: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working\n",
      "  from collections import Mapping, defaultdict\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import fetch_mldata\n",
    "mnist = fetch_mldata('MNIST original', data_home = './')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'DESCR': 'mldata.org dataset: mnist-original',\n",
       " 'COL_NAMES': ['label', 'data'],\n",
       " 'target': array([0., 0., 0., ..., 9., 9., 9.]),\n",
       " 'data': array([[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mnist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X,Y = mnist['data'], mnist['target']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline \n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "some_digit = X[36000]\n",
    "some_digit_image = some_digit.reshape(28,28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(imgs[i], cmap = 'gray')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y[36000]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 建立测试集和训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, Y_train, Y_test = X[:60000], X[60000:], Y[:60000], Y[60000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([49921, 14170, 16906, ..., 56151, 35757, 55191])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将数据集合交叉洗牌， 交叉验证时， 每个集合数据分布均匀， 有些机器学习算法对训练实例的顺序敏感\n",
    "import numpy as np\n",
    "shuffle_index = np.random.permutation(60000)\n",
    "shuffle_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       ...,\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train, Y_train = X_train[shuffle_index], Y_train[shuffle_index]\n",
    "X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False, False, ..., False,  True, False])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 训练一个二元分类器\n",
    "# 创建目标向量\n",
    "Y_train_5 = (Y_train == 5)\n",
    "Y_train_5 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False, False, False, ..., False,  True, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       ...,\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False,  True, ..., False, False, False],\n",
       "       [False, False, False, ..., False,  True, False]])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_train_5 .reshape(20, -1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "Y_test_5 = (Y_test == 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SGD 梯度下降分类器，适合非常大的数据，独立处理训练集数据，一次一个，适合在线学习\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "\n",
    "sgd_clf = SGDClassifier(random_state = 42)\n",
    "sgd_clf.fit(X_train, Y_train_5)\n",
    "\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 性能考核"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用交叉验证测量精度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.9506, 0.9546, 0.9672])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 评估分类器比评估回归器要困难的多\n",
    "\n",
    "# 3个折叠，准确率达95%以上\n",
    "from sklearn.model_selection import cross_val_score\n",
    "\n",
    "cross_val_score(sgd_clf, X_train, Y_train_5, cv = 3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 把每张图都分类成 非5\n",
    "from sklearn.base import BaseEstimator\n",
    "class Never5Classifier(BaseEstimator):\n",
    "    def fit(self, X, Y=None):\n",
    "        pass\n",
    "    def predict(self, X):\n",
    "        return np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False],\n",
       "       [False],\n",
       "       [False],\n",
       "       ...,\n",
       "       [False],\n",
       "       [False],\n",
       "       [False]])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.91015, 0.91005, 0.90875])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "never_5_clf = Never5Classifier()\n",
    "cross_val_score(never_5_clf, X_train, Y_train_5, cv = 3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 混淆矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "# 评估分类器性能的更好方法是混淆矩阵\n",
    "# A类别实例被分为B类别次数\n",
    "# 想要知道分类器将数字3和数字5混淆了多少次，通过混淆矩阵的5行3列\n",
    "from sklearn.model_selection import cross_val_predict\n",
    "\n",
    "Y_train_pred = cross_val_predict(sgd_clf, X_train, Y_train_5, cv=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 与cross_val_score相比"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "    . 同样执行交叉验证\n",
    "    . 返回的不是评估分数，是每个折叠的预测\n",
    "    . 每个实例在模型预测时使用的数据，在训练期从未见过"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54292,   287],\n",
       "       [ 2265,  3156]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "confusion_matrix(Y_train_5, Y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 行表示实际类别， 列表示预测类别\n",
    "# 第一行、第一列，被正确分为 非5，真负类\n",
    "# 第一行、第二列，被错误分为 5，假正类\n",
    "# 第二行、第一列，被错误分为 非5，假负类\n",
    "# 第二行、第二列，被正确分为 5，真正类\n",
    "#这种衡量方式太复杂，我们可以用更简单的指标"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 精度和召回"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9166424629683415"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score, recall_score\n",
    "\n",
    "precision_score(Y_train_5, Y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.582180409518539"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(Y_train_5, Y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 说明 检测一张图的时候，只有77%的时间是准确的，而且只有80%的数字5 被它检测出来\n",
    "# 精度和召回率合成单一指标，成为F1分数， 谐波平均值\n",
    "# 平均值平等对待所有值，谐波平均值会给予较低值更高的权重，只有精度和召回率都很高时，才能获得较高的F1分数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7120938628158844"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "\n",
    "f1_score(Y_train_5, Y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "# F1分数对那些具有相近精度和召回率的分类器更有利，这不一定符合你的期望\n",
    "# 有时候你更关心精度，有时候你更关心召回率\n",
    "# 训练一个分类器检测儿童可以放心观看的视频，你可能要求拦截了很多好的视频，低召回率，保留下来的都是安全的视频，高精度\n",
    "# 不能同时增加精度并减少召回率，反之亦然"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 精度/召回率 权衡"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![jupyter](./quanheng.jpg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   1.SGDClassifier对每个实例基于决策函数计算一个分值，大于阀值为正类，否则为负类\n",
    "   2. 中间阀值右侧找到4个真正类 真5，一个假正类 6，精度为4/5 80%\n",
    "   3. 正所有的6个 真正的5中，分类器找到了4个，召回率为4/6 67%\n",
    "   4. 提高阀值，向右移动，精度提高，召回率低\n",
    "   5. 反之阀值降低，召回率提高，精度降低\n",
    "   6. SKlearn不可以直接设置阀值，可以访问决策分数\n",
    "   7. SGDClassifier 默认阀值为0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "Y_scores = sgd_clf.decision_function([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([80028.78875771])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "threshold = 0\n",
    "Y_some_digit_pred = (Y_scores > threshold)\n",
    "Y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 提高阀值可以降低召回率，提高阀值到200000，就错了这个图\n",
    "threshold = 200000\n",
    "Y_some_digit_pred = (Y_scores > threshold)\n",
    "Y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    }
   ],
   "source": [
    "# 如何决定使用什么阀值\n",
    "# 返回决策值，而不是预测结果\n",
    "Y_scores = cross_val_predict(sgd_clf, X_train, Y_train_5, cv=3, method=\"decision_function\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000,)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_scores.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 有了Y_scores，可以计算所有可能的阀值的精度和召回率\n",
    "from sklearn.metrics import precision_recall_curve\n",
    "precisions, recalls, thresholds = precision_recall_curve(Y_train_5, Y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_precision_recalls_vs_thresholds(precisions, recalls, thresholds):\n",
    "    plt.plot(thresholds, precisions[:-1], \"b--\", label=\"Precision\", linewidth=2)\n",
    "    plt.plot(thresholds, recalls[:-1], \"g-\", label=\"Recall\", linewidth=2)\n",
    "    plt.xlabel(\"Threshold\", fontsize=16)\n",
    "    plt.legend(loc=\"upper left\", fontsize=16)\n",
    "    plt.ylim([0, 1])\n",
    "    \n",
    "plt.figure(figsize=(8,4))\n",
    "plot_precision_recalls_vs_thresholds(precisions, recalls, thresholds)\n",
    "plt.xlim([-700000, 700000])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 通过选择阀值来实现最佳的精度/召回率权衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9831932773109243"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 目标设定为90%的精度， 阀值大概在300000左右\n",
    "Y_train_pred_90 = (Y_scores > 300000)\n",
    "precision_score(Y_train_5, Y_train_pred_90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.12949640287769784"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(Y_train_5, Y_train_pred_90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.\n",
      "findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 21484 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 22238 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 31934 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 24230 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 21484 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 22238 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 31934 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 24230 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['FangSong']\n",
    "def plot_precision_vs_recalls(precisions, recalls):\n",
    "    plt.plot(recalls, precisions, \"b-\", label=\"Precision\", linewidth=2)\n",
    "    plt.xlabel(\"召回\", fontsize=16)\n",
    "    plt.ylabel(\"精度\", fontsize=16)\n",
    "    plt.axis([0,1,0,1])\n",
    "    \n",
    "\n",
    "plt.figure(figsize=(8,6))\n",
    "plot_precision_vs_recalls(precisions, recalls)\n",
    "plt.show()    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ROC曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 本质是真正类tpr和假正类fpr（错误的分为正类的负类比例）\n",
    "# 与召回/精度曲线非常相似"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "fpr, tpr, thresholds = roc_curve(Y_train_5, Y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.\n",
      "findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans.\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 20551 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 27491 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 31867 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 29575 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 30495 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 20551 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 27491 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 31867 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 29575 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 30495 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_roc_curve(fpr, tpr, label=None):\n",
    "    plt.plot(fpr, tpr,  label=label, linewidth=2)\n",
    "    plt.plot([0,1], [0, 1], 'k--')\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "    plt.xlabel(\"假正类率\", fontsize=16)\n",
    "    plt.ylabel(\"真正类率\", fontsize=16)\n",
    "    \n",
    "plt.figure(figsize=(8,4))\n",
    "plot_roc_curve(fpr,tpr)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9595846706522921"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算曲线下面积AUC\n",
    "from sklearn.metrics import roc_auc_score\n",
    "roc_auc_score(Y_train_5, Y_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   . 召回率TPR越高， 分类器的假正类FPR就越多\n",
    "   . 虚线表示纯随机分类器的ROC曲线，好的分类器应该远离这条线，向上角\n",
    "   . 例如：前面的例子ROC曲线很不错是因为跟负类非5相比，正类数据5数量真的很少"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#   训练随机森林分类器，比较SGD分类器的ROC曲线和ROC AUC分数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   1. 获取训练集中每个实例的分数\n",
    "   2. RandomForestClassifier没有descision_function,但拥有dict_proda()方法，sklearn中分类器都有这两个中的一个\n",
    "   3. dict_proda返回一个矩阵，每行一个实例，每列代表一个类别的概率，比如这个图片70%是5\n",
    "   \n",
    "   \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/ensemble/weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n",
      "  from numpy.core.umath_tests import inner1d\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "forest_clf = RandomForestClassifier(n_estimators=10, random_state=42)\n",
    "Y_probas_forest = cross_val_predict(forest_clf, X_train, Y_train_5, cv=3, method=\"predict_proba\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1. , 0. ],\n",
       "       [1. , 0. ],\n",
       "       [1. , 0. ],\n",
       "       ...,\n",
       "       [1. , 0. ],\n",
       "       [0.1, 0.9],\n",
       "       [1. , 0. ]])"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_probas_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 绘制ROC曲线，需要决策值不是概率，直接使用正类的概率作为决策值\n",
    "Y_score_forest = Y_probas_forest[:, 1]\n",
    "fpr_forest, tpr_forest, thresholds_forest = roc_curve(Y_train_5, Y_score_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0. , 0. , 0. , ..., 0. , 0.9, 0. ])"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_score_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 20551 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 27491 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 31867 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 29575 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 30495 missing from current font.\n",
      "  font.set_text(s, 0.0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 20551 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 27491 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 31867 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 29575 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 30495 missing from current font.\n",
      "  font.set_text(s, 0, flags=flags)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,6))\n",
    "plt.plot(fpr, tpr,  \"b:\", label=\"SGD\", linewidth=2)\n",
    "plot_roc_curve(fpr_forest, tpr_forest, \"Random Forest\")\n",
    "plt.legend(loc=\"lower right\", fontsize=16)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9919726945865942"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Rand 比 SGD好很多，ROC AUC分数也高很多\n",
    "roc_auc_score(Y_train_5, Y_score_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9853775643823658"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 再看一下 精度和召回率也很高\n",
    "Y_train_pred_forest = cross_val_predict(forest_clf, X_train, Y_train_5, cv=3)\n",
    "precision_score(Y_train_5, Y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8328721638074156"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(Y_train_5, Y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 总结\n",
    "   1. 选择合适的指标利用交叉验证来对分类器进行评估\n",
    "   2. 选择满足需求的精度/召回率权衡\n",
    "   3. 使用ROC曲线和ROC AUC分数比较多个模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "# 多类别分类器\n",
    "   1. 尝试5之外的检测\n",
    "   2. 多类别分类器区分两个以上的类别\n",
    "   3. 随机森林和朴素贝叶斯可以直接处理多个类别\n",
    "   4. 支持向量机svm和线性分类器只可以处理二元分类器"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 解决方案\n",
    "   1. 将数字图片分类0到9， 训练10个二元分类器，每个数字一个，检测一张图片时，获取每个分类器的决策分数，哪个高属于哪个，称为一对多OvA\n",
    "   2. 为每对数字训练一个二元分类器，区分0，1 区分0，2 区分1，2 称为一对一OvO策略，存在N个类别，需要N*（N-1）/2个分类器，最后看哪个类别获胜最多\n",
    "   \n",
    "# 优缺点\n",
    "   1. OvO只需要用到部分训练集对其必须区分两个类别进行训练\n",
    "   2. 对于较小训练集OvO比较有优势，大训练集OvA速度快，所以OvA更常用，比如svm数据规模扩大时表现糟糕\n",
    "   3. sklearn检查到使用二元分类算法进行多类别分类任务，会自动运行OvA，SVM分类器除外\n",
    "   \n",
    "   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.fit(X_train,Y_train)\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-129231.80194559, -360425.44709175, -328071.2260145 ,\n",
       "        -177167.88453139, -439636.39147253,   80028.78875771,\n",
       "        -631557.87745008, -341883.52201542, -625751.65690184,\n",
       "        -625122.45167702]])"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 内部实际上训练了二个二元分类器，获得图片的决策分数，然后选择了分数最高的类别\n",
    "# 返回10个分数，每个类别1个\n",
    "some_digit_scores = sgd_clf.decision_function([some_digit])\n",
    "some_digit_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.argmax(some_digit_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 目标类别列表会存储在classes_这个属性中，按值大小排列\n",
    "sgd_clf.classes_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.classes_[np.argmax(some_digit_scores)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  使用OvO策略，一对一或一对多\n",
    "from sklearn.multiclass import OneVsOneClassifier\n",
    "ovo_clf = OneVsOneClassifier(SGDClassifier(max_iter=5, tol=np.infty, random_state=42))\n",
    "ovo_clf.fit(X_train, Y_train)\n",
    "ovo_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(ovo_clf.estimators_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用随机森林\n",
    "forest_clf.fit(X_train, Y_train)\n",
    "forest_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0. , 0. , 0. , 0.2, 0. , 0.7, 0.1, 0. , 0. , 0. ]])"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 随机森林直接将实例分为多个类别，调用predict_probab（）可以获得分类器将每个实例分类为每个类别的概率列表\n",
    "forest_clf.predict_proba([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 评估分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.86417716, 0.86034302, 0.85612842])"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用交叉验证评估SGD的准确率\n",
    "cross_val_score(sgd_clf, X_train, Y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.90726855, 0.91019551, 0.90968645])"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将输入进行简单缩放，可以得到准确率90%以上\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))\n",
    "cross_val_score(sgd_clf, X_train_scaled, Y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 错误分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 项目流程\n",
    "   1. 探索数据准备的选项\n",
    "   2. 尝试多个模型\n",
    "   3. 选择最佳模型并用GridSerachCV对参数进行微调\n",
    "   4. 尽可能自动化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 确定了一个相对合适的模型，进一步优化，分析其错误类型 \n",
    "   1. 查看混淆矩阵\n",
    "   2. 使用cross_val_predict()进行预测\n",
    "   3. 调用confusion_matrix()\n",
    "   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n",
      "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/sklearn/linear_model/stochastic_gradient.py:123: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[5743,    2,   20,   10,   12,   39,   43,    9,   41,    4],\n",
       "       [   1, 6483,   46,   29,    6,   36,    6,   10,  116,    9],\n",
       "       [  61,   37, 5328,  101,   76,   27,   83,   58,  173,   14],\n",
       "       [  52,   40,  139, 5335,    2,  229,   37,   64,  145,   88],\n",
       "       [  20,   29,   38,   11, 5350,    8,   53,   34,   86,  213],\n",
       "       [  79,   45,   30,  194,   78, 4574,  114,   30,  189,   88],\n",
       "       [  38,   25,   45,    2,   43,   90, 5616,    5,   54,    0],\n",
       "       [  27,   23,   70,   29,   53,    9,    5, 5831,   14,  204],\n",
       "       [  50,  151,   65,  147,   11,  169,   56,   30, 5047,  125],\n",
       "       [  44,   37,   24,   85,  161,   40,    2,  238,   82, 5236]])"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_train_pred = cross_val_predict(sgd_clf, X_train_scaled, Y_train, cv=3)\n",
    "conf_mx = confusion_matrix(Y_train, Y_train_pred)\n",
    "conf_mx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib的matshow函数来查看混淆矩阵的图像表示\n",
    "plt.matshow(conf_mx, cmap = plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[9.69609995e-01, 3.37666723e-04, 3.37666723e-03, 1.68833361e-03,\n",
       "        2.02600034e-03, 6.58450110e-03, 7.25983454e-03, 1.51950025e-03,\n",
       "        6.92216782e-03, 6.75333446e-04],\n",
       "       [1.48323939e-04, 9.61584100e-01, 6.82290122e-03, 4.30139425e-03,\n",
       "        8.89943637e-04, 5.33966182e-03, 8.89943637e-04, 1.48323939e-03,\n",
       "        1.72055770e-02, 1.33491546e-03],\n",
       "       [1.02383350e-02, 6.21013763e-03, 8.94259819e-01, 1.69519973e-02,\n",
       "        1.27559584e-02, 4.53172205e-03, 1.39308493e-02, 9.73481034e-03,\n",
       "        2.90365895e-02, 2.34978181e-03],\n",
       "       [8.48148752e-03, 6.52422117e-03, 2.26716686e-02, 8.70167999e-01,\n",
       "        3.26211059e-04, 3.73511662e-02, 6.03490458e-03, 1.04387539e-02,\n",
       "        2.36503017e-02, 1.43532866e-02],\n",
       "       [3.42348511e-03, 4.96405341e-03, 6.50462170e-03, 1.88291681e-03,\n",
       "        9.15782266e-01, 1.36939404e-03, 9.07223554e-03, 5.81992468e-03,\n",
       "        1.47209860e-02, 3.64601164e-02],\n",
       "       [1.45729570e-02, 8.30105147e-03, 5.53403431e-03, 3.57867552e-02,\n",
       "        1.43884892e-02, 8.43755765e-01, 2.10293304e-02, 5.53403431e-03,\n",
       "        3.48644162e-02, 1.62331673e-02],\n",
       "       [6.42108821e-03, 4.22440014e-03, 7.60392024e-03, 3.37952011e-04,\n",
       "        7.26596823e-03, 1.52078405e-02, 9.48969246e-01, 8.44880027e-04,\n",
       "        9.12470429e-03, 0.00000000e+00],\n",
       "       [4.30965682e-03, 3.67118915e-03, 1.11731844e-02, 4.62889066e-03,\n",
       "        8.45969673e-03, 1.43655227e-03, 7.98084597e-04, 9.30726257e-01,\n",
       "        2.23463687e-03, 3.25618516e-02],\n",
       "       [8.54554777e-03, 2.58075543e-02, 1.11092121e-02, 2.51239104e-02,\n",
       "        1.88002051e-03, 2.88839515e-02, 9.57101350e-03, 5.12732866e-03,\n",
       "        8.62587592e-01, 2.13638694e-02],\n",
       "       [7.39620104e-03, 6.21953269e-03, 4.03429148e-03, 1.42881156e-02,\n",
       "        2.70633720e-02, 6.72381913e-03, 3.36190956e-04, 4.00067238e-02,\n",
       "        1.37838292e-02, 8.80147924e-01]])"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 看起来不错，大多数图片都在主对角线上，说明它们被正确分类\n",
    "# 数字5看起来比较暗，说明1:数字5图片较少。2:分类器在数字5上执行效果不如其它数字好\n",
    "# 假设把焦点放在错误上，为取得错误率，而不是错误绝对值，需要将混淆矩阵中每个值除以相应类别中的图片数量\n",
    "\n",
    "row_sums = conf_mx.sum(axis=1, keepdims=True)\n",
    "norm_conf_mx = conf_mx / row_sums\n",
    "norm_conf_mx\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.fill_diagonal(norm_conf_mx, 0)\n",
    "plt.matshow(norm_conf_mx, cmap = plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 每行代表实际类别，每列代表预测类别\n",
    "# 8，9列比较亮，说明许多图片被错误的分类为数字8，9\n",
    "# 类别8，9行也偏亮，说明数字8和9经常会跟其它数字混淆\n",
    "# 有些很暗，比如1行，大多数数字1都被正确的分类，一些和8混淆\n",
    "# 5和3是错误最多的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 结论\n",
    "   1. 改进数字8和9的分类\n",
    "   2. 修正数字3和5的混淆"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 如何优化分类器\n",
    "   1. 尝试多收集这些数字的训练集\n",
    "   2. 开发一些新特征来改进分类器\n",
    "   3. 优化分类器算法\n",
    "   4. 使用pillow或opencv对图片预处理，让显示模型更突出\n",
    "   5. 分析单个错误\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_digits(instances, images_per_row=10, **options):\n",
    "    size = 28\n",
    "    images_per_row = min(len(instances), images_per_row)\n",
    "    images = [instance.reshape(size, size) for instance in instances]\n",
    "    n_rows = (len(instances) - 1) // images_per_row + 1\n",
    "    row_images = []\n",
    "    n_empty = n_rows * images_per_row - len(instances)\n",
    "    images.append(np.zeros((size, size * n_empty)))\n",
    "    for row in range(n_rows):\n",
    "        rimages = images[row * images_per_row:(row+1) * images_per_row]\n",
    "        row_images.append(np.concatenate(rimages, axis=1))\n",
    "    image = np.concatenate(row_images, axis =0)\n",
    "    plt.imshow(image, cmap = matplotlib.cm.binary, **options)\n",
    "    plt.axis(\"off\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cl_a, cl_b = 3, 5\n",
    "X_aa = X_train[(Y_train == cl_a) & (Y_train_pred == cl_a)]\n",
    "X_ab = X_train[(Y_train == cl_a) & (Y_train_pred == cl_b)]\n",
    "X_ba = X_train[(Y_train == cl_b) & (Y_train_pred == cl_a)]\n",
    "X_bb = X_train[(Y_train == cl_b) & (Y_train_pred == cl_b)]\n",
    "\n",
    "plt.figure(figsize=(8,8))\n",
    "plt.subplot(221)\n",
    "plot_digits(X_aa[:25], images_per_row=5)\n",
    "plt.subplot(222)\n",
    "plot_digits(X_ab[:25], images_per_row=5)\n",
    "plt.subplot(223)\n",
    "plot_digits(X_ba[:25], images_per_row=5)\n",
    "plt.subplot(224)\n",
    "plot_digits(X_bb[:25], images_per_row=5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 左侧两个是被分类为3的图片\n",
    "# 右侧两个是被分类为5的图片\n",
    "# 大多数错误分类的图片看起来还是非常明显的错误\n",
    "# 原因：SGD是一个线性模型，它所做的就是为每个像素分配一个各个类别的权重，当它看到新的图像，将加权后的像素强度汇总，从而得到一个分数进行分类\n",
    "# 数字3和5在一部分像素位上有区别，所以分类器很容易将其混淆\n",
    "# 通过上面图像，如果书写3的连接点左移，分类器可能将其分类为数字5，这个分类器对图像位移和旋转敏感\n",
    "# 减少混淆的方法之一，就是对图像进行预处理，确保位于中心位置并且没有旋转"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 多标签分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 为每个实例产生多个类别，例如：照片识别多个人脸\n",
    "# 分类器经过训练可以识别小红、小白、小军，一张照片里有小红、小白\n",
    "# 经过分类器，应输出【1，1，0】，是小红、小白，不是小军\n",
    "# 输出多个二元标签的分类系统称为多标签分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "           metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
       "           weights='uniform')"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "Y_train_large = (Y_train >= 7)\n",
    "Y_train_odd = (Y_train % 2 == 1)\n",
    "Y_multilabel = np.c_[Y_train_large, Y_train_odd]\n",
    "\n",
    "knn_clf = KNeighborsClassifier()\n",
    "knn_clf.fit(X_train, Y_multilabel)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False,  True]])"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# knn支持多标签分类，不是所有的分类器都支持\n",
    "knn_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
